﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Snowdreamist.ComponentModel.Configuration
{
    public interface IPluginConfig
    {
        IPluginCompositionConfig Composition { get; }
    }

    public interface IPluginCompositionConfig
    {
        IEnumerable<IPluginCompositionConfigElement> Elements { get; }

        IPluginCompositionConfigElement GetCompositionElement(Guid importIdentity);

        void SetCompositionElement(Guid importIdentity, IPluginCompositionConfigElement element);
    }

    public interface IPluginCompositionConfigElement
    {
        Guid ImportIdentity { get; }

        IEnumerable<IExportedPluginConfigElement> AllowPlugins { get; }

        void Add(Guid pluginID);

        void Remove(Guid pluginID);
    }

    public interface IExportedPluginConfigElement
    {
        Guid PluginID { get; }
    }
}